/**
 * 起码多少秒才能执行一次，控制流量，限制频率
 * scroll 事件，每隔一秒计算一次位置信息
 * 浏览器播放事件，每个一秒计算一次进度信息等
 * @param {*} fn 
 * @param {*} wait 
 * @returns 
 */
function throttle(fn,wait){
    let late = Date.now()
    return function(){
        let now = Date.now()
        if(now-late > wait){
            fn.apply(this,arguments)//交换是不是前缘节流
            late = now
        }
    }
}

/**
 * timer存活说明还没冷却，timer==null 说明已经过了限定时间
 * @param {*} fn 
 * @param {*} wait 
 * @returns 
 */
function throttle2(fn,wait){
    let timer = null;
    return function(){
        if(!timer){
            timer = setTimeout(()=>{
                fn.apply(this,arguments)//放在 set前 前缘防抖
                timer = null;
            },wait)          //下一轮         
        }
    }
}